package com.ripservice.dto;

import com.ripservice.entity.SimulationEntity;
import lombok.Data;

import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

/**
 * 仿真传输对象(DTO)，用于将SimulationEntity转换为DTO格式供前端展示
 */
@Data
public class SimulationDto {

    /**
     * 仿真ID，唯一标识一个仿真实例
     */
    private Long id;

    /**
     * 关联的拓扑结构ID
     */
    private Long topologyId;

    /**
     * 仿真运行状态，可选值包括：
     * - RUNNING: 正在运行
     * - STOPPED: 已停止
     * - COMPLETED: 已完成
     */
    private String status;

    /**
     * 仿真开始时间，格式为 yyyy-MM-dd HH:mm:ss
     */
    private String startedAt;

    /**
     * 仿真停止时间，格式为 yyyy-MM-dd HH:mm:ss
     */
    private String stoppedAt;

    /**
     * 仿真创建时间，格式为 yyyy-MM-dd HH:mm:ss
     */
    private String createdAt;

    /**
     * 构造函数，将SimulationEntity转换为SimulationDto
     * @param entity 仿真实体对象
     */
    public SimulationDto(SimulationEntity entity) {
        this.id = entity.getId();
        this.topologyId = entity.getTopologyId();
        this.status = entity.getStatus();

        // 定义日期时间格式化器，使用系统默认时区
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
                .withZone(ZoneId.systemDefault());

        // 将Instant类型的日期时间格式化为字符串
        this.startedAt = entity.getStartedAt() != null ? formatter.format(entity.getStartedAt()) : null;
        this.stoppedAt = entity.getStoppedAt() != null ? formatter.format(entity.getStoppedAt()) : null;
        this.createdAt = entity.getCreatedAt() != null ? formatter.format(entity.getCreatedAt()) : null;
    }
}